package com.triones.api.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * 加密货币账单（平台使用）
 */
@TableName(value = "tr_crypto_sys_bill")
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class CryptoSysBillDO {
    /**
     * 主键id
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 请求交易流水id
     */
    private String requestId;
    /**
     * 交易id
     */
    private String txnId;
    /**
     * account_id账户号
     */
    private String accountId;
    /**
     * 交易状态 PROCESSING、SUCCEEDED、FAILED
     */
    private String status;
    /**
     * 提现金额-币种
     */
    private String withdrawalMoneyCcy;
    /**
     * 提现金额-数量
     */
    private BigDecimal withdrawalMoneyAmount;
    /**
     * 报价id
     */
    private String priceId;
    /**
     * 报价
     */
    private String price;
    /**
     * 出金金额-币种
     */
    private String payoutMoneyCcy;
    /**
     * 出金金额-数量
     */
    private BigDecimal payoutMoneyAmount;
    /**
     * 收款人信息-收款人id
     */
    private String beneId;
    /**
     * 扣费类型
     */
    private String feeChargeType;
    /**
     * 扣费币种
     */
    private String feeMoneyCcy;
    /**
     * 扣费金额
     */
    private BigDecimal feeMoneyAmount;
    /**
     * 失败码
     */
    private String failedCode;
    /**
     * 失败原因
     */
    private String failedReason;
    /**
     * 是否退费
     */
    private String returnFee;
    /**
     * 创建时间
     */
    private String createdAt;
    /**
     * 结算时间
     */
    private String settledAt;
    /**
     * 完成时间
     */
    private String completedAt;
    /**
     * 子账户id
     */
    private String subAccountId;
    /**
     * 交易附言
     */
    private String remark;
    /**
     * 费用承担方
     */
    private String feeBear;
    /**
     * 支付方式
     */
    private String paymentMethod;

    /**
     * 请求参数
     */
    @TableField(exist = false)
    private Map<String, Object> params = new HashMap<>();
}
